


from transformers import AutoTokenizer

sen='弱小的我也有大梦想！大家一起加油'

tokenizer = AutoTokenizer.from_pretrained("uer/roberta-base-finetuned-dianping-chinese")
print(tokenizer)

# 将tokenizer 保存到本地

tokenizer.save_pretrained("./home_cache")


#%%
# 索引转换，将单词转换为 数字
# step 2 开始句子分词
token= tokenizer.tokenize(sen)
print(token)

# step 3查看词典
print(len(tokenizer.vocab))

# step 4 单词转换为 数字
print(tokenizer.convert_tokens_to_ids("我"))
print(tokenizer.vocab["我"])

print(token)
ids=tokenizer.convert_tokens_to_ids(token)
print(ids)

token=tokenizer.convert_ids_to_tokens(ids)
print(token)
#%%
# 还有更加便捷的实现的方式
ids=tokenizer.encode(sen)
# bert 处理每个句子的时候，会给句子的头添加一个cls,句子的结尾添加sep. 如果不想要，使用add_special_tokens=False
# ids=tokenizer.encode(sen, add_special_tokens=False)
print(ids)

# 将数据解码回来
str_sen=tokenizer.decode(ids)
print(str_sen)
#%%
# step 5 填充与截断，
# 填充 ，句子就变成了20个单词
ids=tokenizer.encode(sen,padding="max_length",max_length=20)
print(ids)

# 截断,句子就变成了5个单词
ids=tokenizer.encode(sen,truncation=True,max_length=5)
print(ids)
#%%
# 其他输入部分
ids=tokenizer.encode_plus(sen,padding="max_length",max_length=20)
print(ids)
#%%
# 处理批量batch数据
sens=["我爱中国", "xxxxx", "有梦想谁都了不起"]
res=tokenizer(sens)
print(res)